home *** CD-ROM | disk | FTP | other *** search
- #ifndef FWASINKS_H
- #define FWASINKS_H
- //========================================================================================
- //
- // File: FWASinks.h
- // Release Version: $ 1.0d1 $
- //
- // Creation Date: 3/28/94
- //
- // Copyright: © 1994 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #ifndef FWEXCDEF_H
- #include "FWExcDef.h"
- #endif
-
- //========================================================================================
- // CLASS FW_CSink
- //========================================================================================
-
- class FW_CSink : public _FW_CAutoDestructObject
- {
-
- public:
-
- FW_CSink();
- virtual ~FW_CSink();
-
- virtual long GetReadableBytes() const = 0;
- virtual void Read(void * destination, long count) = 0;
- virtual const void* ReadPeek(long& availableReadBytes) = 0;
- virtual void ReadPeekAdvance(long bytesRead) = 0;
-
- virtual long GetWritableBytes() const = 0;
- virtual void Write(const void* source, long count) = 0;
- virtual void* WritePeek(long& availableWriteBytes) = 0;
- virtual void WritePeekAdvance(long bytesWritten) = 0;
-
- protected:
- FW_CSink(const FW_CSink& sink);
- FW_CSink& operator=(const FW_CSink& sink);
- };
-
-
- //========================================================================================
- // FW_CRandomAccessSink
- //========================================================================================
-
- class FW_CRandomAccessSink : public FW_CSink
- {
-
- public:
-
- FW_CRandomAccessSink();
- virtual~ FW_CRandomAccessSink();
-
- virtual long GetReadableBytes() const;
-
- virtual long GetLength() const = 0;
- virtual long GetPosition() const = 0;
- virtual void SetPosition(long position) = 0;
-
- protected:
- FW_CRandomAccessSink(const FW_CRandomAccessSink& sink);
- FW_CRandomAccessSink& operator=(const FW_CRandomAccessSink& sink);
- };
-
-
- //========================================================================================
- // CLASS FW_CMemorySink
- //========================================================================================
-
- class FW_CMemorySink : public FW_CRandomAccessSink
- {
-
- public:
-
- FW_CMemorySink(void* buffer, long capacity, long initialPosition=0);
- virtual ~FW_CMemorySink();
-
- virtual void Read(void * destination, long count);
- virtual const void* ReadPeek(long& availableReadBytes);
- virtual void ReadPeekAdvance(long bytesRead);
-
- virtual long GetWritableBytes() const;
- virtual void Write(const void* source, long count);
- virtual void* WritePeek(long& availableWriteBytes);
- virtual void WritePeekAdvance(long bytesWritten);
-
- virtual long GetLength() const;
- virtual long GetPosition() const;
- virtual void SetPosition(long position);
-
- private:
-
- char* fBuffer;
- long fCapacity;
- long fPosition;
-
- FW_CMemorySink(const FW_CMemorySink& sink);
- FW_CMemorySink& operator=(const FW_CMemorySink& sink);
- // Shouldn't copy instances of this class.
- };
-
- #endif
-